7F0C96BC	
	accepts: A0=p->samples,A1=t#1val * width * height
ADDIU	SP,SP,FFC8
SW	S2,001C (SP)
OR	S2,A0,R0	;S2=A0: p->samples
SW	RA,002C (SP)
SW	S5,0028 (SP)
SW	S4,0024 (SP)
SW	S3,0020 (SP)
SW	S1,0018 (SP)
SW	S0,0014 (SP)
SW	A1,003C (SP)	;SP+3C=t#1val * width * height
JAL	7F0CBF2C	;get next 3 bits from data
ADDIU	A0,R0,0003
SW	V0,0034 (SP)	;SP+34=chunk1
JAL	7F0CBF2C	;get next 3 bits
ADDIU	A0,R0,0003
SW	V0,0030 (SP)	;SP+30=chunk2
JAL	7F0CBF2C	;get next 4 bits
ADDIU	A0,R0,0004
LW	T6,0034 (SP)	;T6=chunk1
LW	T7,0030 (SP)	;T7=chunk2
OR	S4,V0,R0	;S4=chunk3
OR	S5,R0,R0	;S5=0
ADDU	T8,T6,T7	;T8=chunk1+chunk2
ADDU	A0,T8,V0	;A0=chunk1+chunk2+chunk3
ADDIU	V1,A0,0001	;V1=chunk1+chunk2+chunk3+1
BLEZ	V1,7F0C9738	;don't bother if value is silly
LW	T9,003C (SP)	;T9=t#1val * width * height
//7F0C9728:	loop to increment S5
SUBU	V1,V1,V0	;V1=chunk1+chunk2+chunk3+1 - chunk3
ADDIU	V1,V1,FFFF	;V1--
BGTZ	V1,7F0C9728	;loop if V1>0
ADDIU	S5,S5,0001	;S5++
//7F0C9738:
BLEZ	T9,7F0C98FC	;don't bother if image size is stupid
OR	S1,R0,R0	;S1=0	count
//7F0C9740:
JAL	7F0CBF2C	;get next bit
ADDIU	A0,R0,0001
BNEZ	V0,7F0C9788	;branch if bit set
SLTI	AT,S4,0009
BEQ	AT,R0,7F0C9770	;branch if chunk3 >8
OR	A0,S4,R0	;A0=S4: chunk3
//7F0C9758:	chunk3 <9
OR	A0,S4,R0	;A0=S4: chunk3
JAL	7F0CBF2C	;grab chunk3 bytes from data
ADDU	S0,S2,S1	;S0=p->samples + offset
SB	V0,0000 (S0)	;save value->samples
BEQ	R0,R0,7F0C98EC
ADDIU	S1,S1,0001	;count++
//7F0C9770:	chunk3 >8
SLL	T0,S1,0x1	;T0=count*2
JAL	7F0CBF2C	;grab next chunk3 bits
ADDU	S0,S2,T0	;S0=p->samples + count*2
SH	V0,0000 (S0)	;save value->samples
BEQ	R0,R0,7F0C98EC
ADDIU	S1,S1,0001	;count++
//7F0C9788:	bit is set
JAL	7F0CBF2C	;grab next chunk1 bits
LW	A0,0034 (SP)	;A0=chunk1
SUBU	S3,S1,V0
ADDIU	S3,S3,FFFF	;S3=count-value-1
JAL	7F0CBF2C	;grab next chunk2 bits
LW	A0,0030 (SP)	;A0=chunk2
ADDU	A0,V0,S5	;A0=value+funnyS5frombefore
SLTI	AT,S4,0009
BEQ	AT,R0,7F0C9848	;branch if chunk3 > 8
OR	A3,A0,R0	;A3=A0: value+funnyS5frombefore
//7F0C97B0:	chunk3<9
ADDU	A2,S3,A0	;A2=START HERE AGAIN!!!
SLT	AT,S3,A2
OR	V1,S3,R0
BEQ	AT,R0,7F0C9834
ADDU	S0,S2,S1
SUBU	A1,A2,S3
ANDI	T1,A1,0003
BEQ	T1,R0,7F0C97F8
ADDU	A0,T1,S3
ADDU	V0,S2,V1
//7F0C97D8:
LBU	T2,0000 (V0)
ADDIU	V1,V1,0001
ADDIU	S1,S1,0001
ADDIU	S0,S0,0001
ADDIU	V0,V0,0001
BNE	A0,V1,7F0C97D8
SB	T2,FFFF (S0)
BEQ	V1,A2,7F0C9834
//7F0C97F8:
ADDU	A0,S3,A3
ADDU	V0,S2,V1
//7F0C9800:
LBU	T3,0000 (V0)
ADDIU	V1,V1,0004
ADDIU	S1,S1,0004
SB	T3,0000 (S0)
LBU	T4,0001 (V0)
ADDIU	S0,S0,0004
ADDIU	V0,V0,0004
SB	T4,FFFD (S0)
LBU	T5,FFFE (V0)
SB	T5,FFFE (S0)
LBU	T6,FFFF (V0)
BNE	V1,A0,7F0C9800
SB	T6,FFFF (S0)
//7F0C9834:
JAL	7F0CBF2C
OR	A0,S4,R0
SB	V0,0000 (S0)
BEQ	R0,R0,7F0C98EC
ADDIU	S1,S1,0001
//7F0C9848:	bit set, chunk3>8
ADDU	A2,S3,A0
SLT	AT,S3,A2
SLL	T7,S1,0x1
ADDU	S0,S2,T7
BEQ	AT,R0,7F0C98DC
OR	V1,S3,R0
SUBU	A1,A2,S3
ANDI	T8,A1,0003
BEQ	T8,R0,7F0C9898
ADDU	A0,T8,S3
SLL	T9,V1,0x1
ADDU	V0,S2,T9
//7F0C9878:
LHU	T0,0000 (V0)
ADDIU	V1,V1,0001
ADDIU	S1,S1,0001
ADDIU	S0,S0,0002
ADDIU	V0,V0,0002
BNE	A0,V1,7F0C9878
SH	T0,FFFE (S0)
BEQ	V1,A2,7F0C98DC
//7F0C9898:
ADDU	A0,S3,A3
SLL	T1,A0,0x1
SLL	T2,V1,0x1
ADDU	V0,S2,T2
ADDU	A1,T1,S2
//7F0C98AC:
LHU	T3,0000 (V0)
ADDIU	V0,V0,0008
ADDIU	S1,S1,0004
SH	T3,0000 (S0)
LHU	T4,FFFA (V0)
ADDIU	S0,S0,0008
SH	T4,FFFA (S0)
LHU	T5,FFFC (V0)
SH	T5,FFFC (S0)
LHU	T6,FFFE (V0)
BNE	V0,A1,7F0C98AC
SH	T6,FFFE (S0)
//7F0C98DC:
JAL	7F0CBF2C
OR	A0,S4,R0
SH	V0,0000 (S0)
ADDIU	S1,S1,0001
//7F0C98EC:
LW	T7,003C (SP)
SLT	AT,S1,T7
BNEZ	AT,7F0C9740
NOP
//7F0C98FC:
LW	RA,002C (SP)
LW	S0,0014 (SP)
LW	S1,0018 (SP)
LW	S2,001C (SP)
LW	S3,0020 (SP)
LW	S4,0024 (SP)
LW	S5,0028 (SP)
JR	RA
ADDIU	SP,SP,0038
